package jdbc;

import java.sql.Connection;
import java.sql.Date;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.Statement;
import java.text.SimpleDateFormat;
/*
  Medicion de tiempos con PreparedStatement y Statement
*/
public class MedicionTiempos {

    public static void main(String[] args) {
        String driver = "org.gjt.mm.mysql.Driver";
        String url = "jdbc:mysql://localhost:3306/test";
        
        try {
            Class.forName(driver);
//            DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
        } catch (ClassNotFoundException ex) {
            System.out.println("Driver incorrecto/Driver no en classpath: " + ex);
            return;
        }
        Connection con = null;
        try {
            con = DriverManager.getConnection(url, "root", "12345678");
            String consulta = "select nombre,fechanacimiento,sueldo from Persona "+
                    " WHERE sueldo > ? ";

            PreparedStatement ps = con.prepareStatement(consulta);
            {
                long inicio = System.currentTimeMillis();
                for (int i = 0; i < 500; i++) {
                    ps.setDouble(1, -i);
                    ResultSet rs = ps.executeQuery();
                    while (rs.next()) {
                        String nombre = rs.getString(1);
                        double sueldo = rs.getDouble("sueldo");
                        Date fecha = rs.getDate("fechaNacimiento");                        
                    }
                }
                long fin = System.currentTimeMillis();
                System.out.println("PreparedStatement: " + (fin - inicio));
            }
            String consulta2 = "select nombre,fechanacimiento,sueldo from Persona "+
                    " WHERE sueldo > ";            
            Statement st = con.createStatement();
            {
                long inicio = System.currentTimeMillis();
                for (int i = 0; i < 500; i++) {                    
                    ResultSet rs = st.executeQuery(consulta2+"-"+i);
                    while (rs.next()) {
                        String nombre = rs.getString(1);
                        double sueldo = rs.getDouble("sueldo");
                        Date fecha = rs.getDate("fechaNacimiento");
                    }
                }
                long fin = System.currentTimeMillis();
                System.out.println("Statement: " + (fin - inicio));
            }
        } catch (Exception ex) {
            System.out.println("ERROR: " + ex);
            ex.printStackTrace();
        } finally {
            if (con != null) {
                try {
                    con.close();
                } catch (Exception ex) {
                }
            }
        }


    }
}
